package com.yangrong.basic;

public class FinalInstanceField {

	/*
	 * final修饰符大都应用于基本类型域，或不可变类的域（如果类中的每个方法都不会改变其对象，这种类就是不可变类。例如String）
	 */
	private final String name = "final";
	
	/*
	 * 对于可变的类，使用final
	 * final关键字只是表示存储在evaluations变量中的对象引用不会再只是其他StringBuilder对象。不过这个对象个更改:
	 * 
	 * public void giveGoldStar() {
	 *    evaluations.append(LocalDate.now() + ": Gold Star!\n");
	 * }
	 */
	private final StringBuilder evaluations = new StringBuilder();
	
	/*
	 * 补充：
	 * String、StringBuffer、StringBuilder都是final修饰，final只是说三者不能够再被继承
	 * String不能修改是因为 private final char value[];
	 * StringBuffer线程安全
	 * StringBuilder线程不安全
	 * 效率 StringBuilder > StringBuffer > String
	 * 
	 * String类的拼接需要在堆内存中开辟新的空间，浪费资源。
	 * StringBuffer、StringBuilder类的对象能够被多次改变，且不产生新的未使用对象
	 * 
	 * 操作少量数据用String
	 * 单线程字符串缓冲区下操作大量数据StringBuilder
	 * 多线程字符串缓冲区下操作大量数据StringBuffer
	 */

}
